/**
 * 
 */
package br.idez.idezJet.negocio.service;

import java.util.Collection;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.OptimisticLockException;

import br.idez.idezJet.integracao.dao.UsuarioDAO;
import br.idez.idezJet.integracao.vo.Usuario;
import br.idez.idezJet.util.Encriptacao;

/**
 * @author Moacir Junior
 * 
 */
@Stateless
@Remote(UsuarioService.class)
public class UsuarioServiceImpl implements UsuarioService {

	@EJB
	private UsuarioDAO usuarioDAO;

	public UsuarioServiceImpl() {

	}

	@Override
	public void incluir(Usuario o) throws Exception {
		o.setSenha(Encriptacao.encripta(o.getSenha()));
		usuarioDAO.incluir(o);
	}

	@Override
	public void alterar(Usuario o) throws Exception {
		try{	
			usuarioDAO.alterar(o);
		}catch(OptimisticLockException ex){
			Usuario u = this.consultar(o);
			this.alterar(u);
		}
	}

	@Override
	public Usuario consultar(Usuario o) throws Exception {
		return usuarioDAO.consultar(o);
	}

	@Override
	public Collection<Usuario> listar() throws Exception {
		return usuarioDAO.listar();
	}

	@Override
	public Collection<Usuario> listar(Usuario o) throws Exception {
		return usuarioDAO.listar(o);
	}

	@Override
	public void excluir(Usuario o) throws Exception {
		try{
			usuarioDAO.excluir(o);
		}catch(OptimisticLockException ex){
			Usuario u = this.consultar(o);
			this.excluir(u);
		}
	}

	@Override
	public void excluirUsuarios(List<Usuario> listUsuarios) throws Exception {
		for (Usuario u : listUsuarios) {
			this.excluir(u);
		}
	}

	public UsuarioDAO getUsuarioDAO() {
		return usuarioDAO;
	}

	public void setUsuarioDAO(UsuarioDAO usuarioDAO) {
		this.usuarioDAO = usuarioDAO;
	}

	@Override
	public Usuario consultarUsuarioSenha(Usuario o) throws Exception {
		return this.usuarioDAO.consultarUsuarioSenha(o);
	}

}
